/**
 * Created by 孙淼 on 2023/2/28 17:35
 */
#ifndef TREE_FUNCTION_H
#define TREE_FUNCTION_H

#include <stdio.h>
#include <stdlib.h>

typedef int BiElemType;
typedef struct BiTNode{
    BiElemType weight; //直接拿字符的ASCII值来算，为了方便结束
    struct BiTNode *lchild;
    struct BiTNode *rchild;
}BiTNode,*BiTree;

// tag结构体是做辅助队列使用的
typedef struct tag{
    BiTree p;  //树的某个结点的地址值
    struct tag *pnext;
}tag_t,*ptag_t;

// 队列的结构体
typedef BiTree ElemType;
typedef struct LinkNode{
    ElemType data;
    struct LinkNode *next;
}LinkNode;
typedef struct {
    LinkNode *front,*rear; //链表头，链表尾 ，队头队尾
}LinkQueue;  //先进先出

void InitQueue(LinkQueue &Q);
void EnQueue(LinkQueue &Q,ElemType x);
bool DeQueue(LinkQueue &Q,ElemType &x);
bool IsEmpty(LinkQueue Q);

#endif //TREE_FUNCTION_H
